<& Elements/Header, Title => loc('Apikeys') &>
<& /Elements/ListActions, actions => \@results &>
<& Elements/ApikeyGeneration, 
    groups  => \%group_map,
    %ARGS 
&>
<& Elements/ApikeyDisplay, 
    recs    => \@recs,
    groups  => \%group_map,
    %ARGS 
&>
<& Elements/ApikeyDisplayGroups,
    groups  => \%group_map,
    %ARGS
&>

<%INIT>
require CIF::WebAPI::APIKey;
my $user = $session{'CurrentUser'}->UserObj();

my $g = $user->OwnGroups();
my %group_map;
while(my $grp = $g->Next()){
    next unless($grp->Name() =~ /^DutyTeam (\S+)/);
    my $guid = lc($1);
    my $priority = $grp->FirstCustomFieldValue('CIFGroupPriority');
    $group_map{$guid} = $priority;
}
$group_map{'everyone'} = 1000;
my @sorted = sort { $group_map{$a} <=> $group_map{$b} } keys(%group_map);

if($GenerateKey){
    my $found = 0;
    if(ref($add_groups) eq 'ARRAY'){
        foreach(@$add_groups){
            $found = 1 if($_ eq $default_group);
        }
    } else {
        $found = 1 if($add_groups eq $default_group);
    }
    unless($found){
        push(@results,'default group must be in your Groups selection');
    } else {
        require RT::CIFMinimal;
        my $id = RT::CIFMinimal::generate_apikey({
            user            => $user,
            description     => $key_description,
            default_guid    => $default_group,
            groups          => $add_groups,
        });
        if($id){
            push(@results,'key '.$id->uuid().' successfully generated');
        } else {
            push(@results,'key generation failed');
        }
    }
}

if($PurgeKey){
    my $r = CIF::WebAPI::APIKey->retrieve(uuid => $uuid);
    my $_uuid = $r->uuid();
    if($r->delete()){
        push(@results,$_uuid.' deleted');
    } else {
        push(@results,'error trying to delete: '.$_uuid);
    }
}

my @recs = CIF::WebAPI::APIKey->search(uuid_alias => $user->EmailAddress());
use Data::Dumper;

#A hack to make sure that session gets rewritten.
$session{'i'}++;
</%INIT>

<%ARGS>
$GenerateKey => undef
$PurgeKey => undef
$uuid => undef
$key_description => undef
@results => undef
$default_group => undef
$add_groups => undef
</%ARGS>
